/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package worlds3d;

import xenon3d.Canvas3D;
import xenon3d.View3D;
import xenon3d.Xenon3D;

/**
 * Basic application class for 3D rendering.
 */
public class Application3D {
    
    // <editor-fold defaultstate="collapsed" desc=" Private Fields ">
    
    /** The Xenon3D master window. */
    private Xenon3D xenon;
    
    /** The Canvas3D to render the scene into. */
    private Canvas3D canvas;

    /** The View3D which defines the view to the scene. */
    private View3D view;

    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc=" Initialization ">
    
    /**
     * Creates a new Application3D.
     */
    public Application3D() {
        xenon = new Xenon3D();
        view = new View3D();
        view.setViewModePolicy(View3D.ViewModePolicy.Trace);
        canvas = createCanvas3D();
        canvas.attachView(view);
        xenon.attachCanvas(canvas);
    }
    
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc=" Local Canvas3D class ">
    
    /**
     * Returns a new customized Canvas3D object.
     * @return the new Canvas3D
     */
    private Canvas3D createCanvas3D() {
        return new Canvas3D() {
            
            @Override
            public void init() {
                System.out.println("Canvas3D.init()");
            }
            
            @Override
            public void reshape(int width, int height) {
                System.out.println("Canvas3D.reshape(" + width + ", " + height + ")");
            }
            
            @Override
            public void preRender() {
                System.out.println("Canvas3D.preRender()");
            }
            
            @Override
            public void render() {
                System.out.println("Canvas3D.render()");
            }
            
            @Override
            public void postRender() {
                System.out.println("Canvas3D.postRender()");
            }
            
            @Override
            public void dispose() {
                System.out.println("Canvas3D.dispose()");
            }
        };
	
    }
    
    // </editor-fold>

} // end class Application3D